import Vue from 'vue'
import App from './App.vue'
import router from "./router"
import store from "./store"
import subMen from "qf-sub-menu" //引入进度条
import nprogress from 'nprogress'
import"nprogress/nprogress.css"
import "./assets/login-css/index.css"
Vue.config.productionTip = false;
// 全局前置钩子（路由守卫）
Vue.use(subMen)
router.beforeEach((to,from,next)=> {
  nprogress.start()
  // console.log(to); //即将进入路由
  // console.log(next); //即将离开路由
  // console.log(from); //放行
  // 判断本地是否有token
  // 除了登入页意外，其他所有的页面，在没有登录入的情况下都不给访问
  // 如果有就放行，如果没有就不通过,重新跳转登入页
  let token = localStorage.getItem('xdw-token') || ""
  if(token) { //已经登录
    // 获取用户菜单
    // store中sideMenu是否为空数组，如果是空数组就要获取菜单
    if(store.state.userRoutes.length===0){
      // console.log(store.dispatch("GET_MENULIST"));
      store.dispatch("GET_MENULIST")
      .then(()=> {
        next({path: to.path})//放行
      })
    } else 
    {
      next()
    }
    
  } else { //没有登录
    // 判断它是不是登录页面
    if(to.path !== "/login") {
      // 跳转到登录页
      next({path:"/login"})
    } else
    {
      next()
    }
  }
  next()
})

router.afterEach((to,from)=> { //全局后置钩子
  nprogress.done()
  // console.log(to);
  // console.log(from);
  let breadCrumb = [...to.matched] //浅拷贝到一个新数组
  breadCrumb.splice(0,1)
  //  console.log(breadCrumb);
  // 调用comit触发mutation 更改vuex中的breaCrumb

  store.commit("SET_BREADCRUMB",breadCrumb)
})

new Vue({
  store,
  router,
  render: h => h(App),
}).$mount('#app')
